/*
 * Copyright (c) 2009 LastFM.Desktop Anton Pavlik.
 * All Rights Reserved.
 * 
 * You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, 
 * with or without modifications, and in Source or Object form, provided that You meet the following 
 * conditions:
 * 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
 *
 * 2. You must cause any modified files to carry prominent notices stating that You changed the files; 
 * and
 *
 * 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, 
 * patent, trademark, and attribution notices from the Source form of the Work, excluding those notices 
 * that do not pertain to any part of the Derivative Works.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * You may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 * http://www.apache.org/licenses/LICENSE-2.0 
 *
 * Unless required by applicable law or agreed to in writing, Licensor provides the Work 
 * (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
 * CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties 
 * or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. 
 * YOU ARE SOLELY RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF USING OR REDISTRIBUTING THE WORK
 * AND ASSUME ANY RISKS ASSOCIATED WITH YOUR EXERCISE OF PERMISSIONS UNDER THIS LICENSE. 
 */
package org.shake.lastfm.model;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class UserPreferences implements Serializable
{
//    private Log log = LogFactory.getLog(UserPreferences.class);

    private static final long serialVersionUID = 114061639477331301L;
    
    private final static UserPreferences INSTANCE = new UserPreferences();
    private final String prefFileName = "user.pref"; 
    
    private String userName;
    private String passwd;
    
    private UserPreferences(){}
    
    public static UserPreferences getInstance()
    {
        return INSTANCE;
    }
    
    public String getUserName()
    {
        return this.userName;
    }

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public String getPasswd()
    {
        return this.passwd;
    }

    public synchronized void setPasswd(char[] passwd)
    {
        this.passwd = new String(passwd);
    }
    
    public synchronized void save()
    {
        try
        {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(this.prefFileName));
            out.writeObject(this);
            out.close();
            
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    
    public synchronized void restore() throws IOException
    {
        try
        {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(this.prefFileName));
            Object readObject = in.readObject();
            
            UserPreferences up = (UserPreferences)readObject;
            this.userName = up.getUserName();
            this.passwd = up.getPasswd();
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        } catch (ClassCastException e)
        {
            e.printStackTrace();
        }
    }
}